#include <openssl/md5.h>
#include <string.h>
#include <stdio.h>

void md5_hash_from_string (char *string, char *hash)
{
    int i;
    char unsigned md5[MD5_DIGEST_LENGTH] = {0};

    MD5((const unsigned char *)string, strlen(string), md5);

    for (i=0; i < MD5_DIGEST_LENGTH; i++) {
        sprintf(hash + 2*i, "%02x", md5[i]);
    }
}

int fsize(const char * fname, long * ptr)
{
    /* Cette fonction retourne 0 en cas de succes, une valeur differente dans le cas contraire. */
    /* La taille du fichier, si elle a pu etre calculee, est retournee dans *ptr                */
    
    FILE * file;
    int ret = 0;
    
    file = fopen(fname, "rb");   
    if (file != NULL)
    {
        fseek(file, 0, SEEK_END); /* aller a la fin du fichier */
        *ptr = ftell(file); /* lire l'offset de la position courante par rapport au debut du fichier */
        fclose(file);
    }
    else
        ret = 1;
    
    return ret;
}

